CREATE EXTERNAL TABLE jms_dwd.dwd_s03_whole_operations_trace_rank_tms_dt(
   `waybill_no` string COMMENT '运单编号',
   `step` int COMMENT '全网点轨迹步数',
   `scan_type` string COMMENT '扫描类型',
   `network_code` string COMMENT '扫描网点编码',
   `network_type` string COMMENT '扫描网点类型,1.加盟商,2.转运中心,3.集散点,4.普通网点,5.代理区,6.总部,0.其他',
   `network_name` string COMMENT '扫描网点名称',
   `network_scan_time_early` timestamp COMMENT '网点操作最早扫描时间',
   `scan_time_early` timestamp COMMENT '网点单类操作最早扫描时间',
   `scan_time_last` timestamp COMMENT '网点单类操作最晚扫描时间',
   `prev_network_code` string COMMENT '上一站网点编码',
   `prev_network_type` string COMMENT '上一站网点类型,1.加盟商,2.转运中心,3.集散点,4.普通网点,5.代理区,6.总部,0.其他',
   `next_network_code` string COMMENT '下一站网点编码',
   `next_network_type` string COMMENT '下一站网点类型,1.加盟商,2.转运中心,3.集散点,4.普通网点,5.代理区,6.总部,0.其他',
   `step_center` int COMMENT '0：普通网点，非0：中心网点正序',
   `step_center_reserve` int COMMENT '0：普通网点，非0：中心网点倒序',
   `step_entrepot` int COMMENT '0：普通网点，非0：集散网点正序',
   `step_entrepot_reserve` int COMMENT '0：普通网点，非0：集散网点逆序',
   `recordid` string COMMENT '记录编号',
   `packagecode` string COMMENT '所属包号',
   `nextstationcode` string COMMENT '上下一站编号',
   `nextstation` string COMMENT '上一站或下一站',
   `destination` string COMMENT '目的地点',
   `scanusercode` string COMMENT '扫描雇员编号',
   `scanuser` string COMMENT '扫描雇员',
   `source` string COMMENT '来源',
   `weight` string COMMENT '扫描重量',
   `expresstype` string COMMENT '快件类型',
   `returnflag` string COMMENT '退件标志',
   `elescaleflag` string COMMENT '电子秤标志',
   `pistolid` string COMMENT '巴枪ID',
   `shipment_no` string COMMENT '任务编号',
   `is_sign` string COMMENT '签收标识，1是，0否',
   `roadsection_id` bigint COMMENT '路段编号',
   `planned_arrival_time` timestamp COMMENT '计划到达日期+时间',
   `actual_arrival_time` timestamp COMMENT '实际到达时间',
   `planned_departure_time` timestamp COMMENT '计划离开日期+时间',
   `actual_departure_time` timestamp COMMENT '实际离开时间',
   `latest_arrival_time` timestamp COMMENT '最晚到车时间+日期',
   `update_time` timestamp COMMENT '数据修改时间',
   `sendcustomer` string COMMENT '寄件客户')
 COMMENT '运单操作排序去重汇总表PRO，粒度：运单+操作'
 PARTITIONED BY (
   `dt` string COMMENT '运单录入时间(yyyy-mm-dd)')
 ROW FORMAT SERDE
   'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
 STORED AS INPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
 OUTPUTFORMAT
   'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
 LOCATION
   '/dw/hive/jms_dwd.db/external/dwd_s03_whole_operations_trace_rank_tms_dt'
 TBLPROPERTIES (
   'discover.partitions'='false',
   'parquet.column.index.access'='true');


--目标表 dwd_s03_whole_operations_trace_rank_tms_dt
--该表设计目标：
-- 经过排序的操作明细表（dwd_s03_whole_operations_trace_rank_dt）关联经停表（干线、支线） 获取经停表的信息
--    路段编号
--    计划到达日期+时间
--    实际到达时间
--    计划离开日期+时间
--    实际发车时间
--    最晚到车时间+日期

-- ps： 经停表有两张，每天全量backup 一个分区
-- ps： 取dwd_s03_whole_operations_trace_rank_dt 表最近30天的数据关联 经停表 ，获取经停信息，由于前者数据量太大，关联计算容易失败，这里分两批数据关联。
--      前者取最近15天的数据 关联经停表union 之后的结果，这里union 之后的结果做内容裁剪，获取最近15天内的经停信息
--      前者取最近16-30天，2049分区的数据，关联经停表union 之后的结果， 这里union 之后的结果做内容裁剪，获取最近30天内的经停信息，思考：这里后者为什么取30天，2049分区数据放到这里关联
--      由于前者以运单的录入时间作为分区，所以分区之间运单是完全隔离的，这里跑数的时候， 可以一个分区一个分区的跑，这里现阶段15个分区一跑